package com.weixing.mall.provider.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.weixing.mall.provider.model.domain.Order;
import com.weixing.mall.provider.model.vo.report.product.ProductSaleDetailVo;
import com.weixing.mall.provider.model.vo.report.product.ProductSaleReportVo;
import com.weixing.mall.provider.model.vo.report.product.ProductSaleVolumeDetailVo;
import com.weixing.mall.provider.model.vo.report.product.ProductSaleVolumeVo;

import java.math.BigDecimal;

/**
 * @author jzy
 * @date 2020/6/8
 */
public interface IDayReportProductService  extends IService<Order> {

    /**
     * 商品部报表--1销售报表
     * @param catId 商品分类
     * @param styleNo 商品款号
     * @param goodsSn 商品货号
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 分页
     * @return IPage
     */
    IPage<ProductSaleReportVo> productSaleReport(Long  catId, String styleNo, String goodsSn, String startTime, String endTime, Page page);

    /**
     * 商品部报表--2销售明细
     * @param orderMin 订单量最小
     * @param orderMax 订单量最大
     * @param stockoutMin 断货量最小
     * @param stockoutMax 断货量最大
     * @param cancelMin 取消量最小
     * @param cancelMax 取消量最大
     * @param returnMin 退货量最小
     * @param returnMax 退货量最大
     * @param priceMin 价格最小
     * @param priceMax 价格最大
     * @param actType 活动分类 1代理商活动 2秒杀活动
     * @param actId 活动Id
     * @param color 颜色
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 分页
     * @return IPage
     */
    IPage<ProductSaleDetailVo> productSaleDetail(Integer orderMin, Integer orderMax, Integer stockoutMin, Integer stockoutMax, Integer cancelMin, Integer cancelMax,
                                                 Integer returnMin, Integer returnMax, BigDecimal priceMin, BigDecimal priceMax,
                                                 Integer actType, Long actId, String color, String startTime, String endTime,String goodsSn, Page page);
    /**
     * 商品部报表--3商品销量报表
     * @param actId 活动Id
     * @param color 颜色
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 分页
     * @return IPage
     */
    IPage<ProductSaleVolumeVo> productSaleVolume(Long actId, String color, String startTime, String endTime, Page page);

    /**
     * 商品部报表--3商品销量报表-详细数据
     * @param type 类型 1订单总量  2 断货量 3取消量 4退货量
     * @param actId 活动Id
     * @param color 颜色
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 分页
     * @return IPage
     */
    IPage<ProductSaleVolumeDetailVo> productSaleVolumeDetail(Integer type, Long actId, String color, String startTime, String endTime, Page page);
}
